#ifndef __CROSSFIRE_SHADER
#define __CROSSFIRE_SHADER

class CF_CORE_API CCF_Shader
{
private:
	LPDIRECT3DDEVICE9 m_pDevice;
	LPD3DXEFFECT m_pEffect;
	LPCWSTR m_pShaderFileName;
public:
	CCF_Shader();
	~CCF_Shader();
	BOOL Initialize(LPDIRECT3DDEVICE9 Device, const LPCWSTR ShaderFile);
	void BeginShader();
	void EndShader();
	
	void Pass(int Pass);
	void EndPass();
	void CommitChanges();

	void SetValue(char* Parameter, int Value);
	void SetValue(char* Parameter, float Value);
	void SetValue(char* Parameter, bool Value);
	void SetValue(char* Parameter, float* Value, UINT Count);
	void SetValue(char* Parameter, D3DXVECTOR4* Value);
	void SetValue(char* Parameter, D3DXMATRIX* Value);
	void SetValue(char* Parameter, LPDIRECT3DBASETEXTURE9 Texture);
};


#endif